	Service-Oriented Architecutre (SOA) is a software engineering paradigm originally developed in the 1990s as a response to the ever-increasing complexity of large software systems. Business software architectures are large and complex entities with poorly defined relationships between components. SOA attempts to remedy such complexity by decomposing software problems to individual "services." In an SOA environment, resources on a network are made available as independent web services that can be accessed without knowledge of their underlying platform implementation. Each service, like a module, performs a specific function and conforms to a documented interface that others can easily use. These services (or rather, their interfaces) are exposed over a network to allow users to combine and reuse them in application development. Complex architectures can then be constructed from basic services, created a known network of service connections. 

	An important principle in service-oriented architectures is loose coupling, which requires that components be connected through interfaces rather than through specific implementations. To this end, services in a well-designed SOA will have little to no knowledge of each other beyond the interfaces used to communicate. This allows for a number of useful properties, such as language and implentation independence: Services do not need to be written in the same language to communicate, and implentations can be changed without affecting the behavior of the system so long as the interface is unaffected. Simplifying and abstracting the connections between services drastically reduces the complexity of a software architecture, making it easier to understand, test, and maintain.

	Loose coupling arises from the fact that software architectures are inherently heterogeneous; they involve numerous components, often written in a variety of languages and running on multiple operating systems and computer architectures. The SOA paradigm takes this in stride, accepting heterogeneity and even promoting it through the use of implementation-independent services. This makes it a powerful system for development of large software projects in many different business areas.

	This paper will discuss the paradigms of SOA, its history and future, some use cases, and finally the advantages and disadvantages of SOA.